home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / AIncludes / MoviesFormat.a < prev    next >
Encoding:
Text File  |  1996-01-24  |  20.3 KB  |  556 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        MoviesFormat.a
  3. ;
  4. ;    Contains:    QuickTime Interfaces.
  5. ;
  6. ;    Version:    Technology:    QuickTime 2.0
  7. ;                Package:    Universal Interfaces 2.2 in “MPW” on ETO #20
  8. ;
  9. ;    Copyright:    © 1984-1995 by Apple Computer, Inc.
  10. ;                All rights reserved.
  11. ;
  12. ;    Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13. ;                stack.  Include the file and version information (from above)
  14. ;                in the problem description and send to:
  15. ;                    Internet:    apple.bugs@applelink.apple.com
  16. ;                    AppleLink:    APPLE.BUGS
  17. ;
  18. ;
  19.  
  20.     IF &TYPE('__MOVIESFORMAT__') = 'UNDEFINED' THEN
  21. __MOVIESFORMAT__ SET 1
  22.  
  23.  
  24.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  25.     include 'Types.a'
  26.     ENDIF
  27. ;        include 'ConditionalMacros.a'                                ;
  28.  
  29.     IF &TYPE('__WINDOWS__') = 'UNDEFINED' THEN
  30.     include 'Windows.a'
  31.     ENDIF
  32. ;        include 'Memory.a'                                            ;
  33. ;            include 'MixedMode.a'                                    ;
  34. ;        include 'Quickdraw.a'                                        ;
  35. ;            include 'QuickdrawText.a'                                ;
  36. ;        include 'Events.a'                                            ;
  37. ;            include 'OSUtils.a'                                    ;
  38. ;        include 'Controls.a'                                        ;
  39. ;            include 'Menus.a'                                        ;
  40.  
  41.     IF &TYPE('__IMAGECOMPRESSION__') = 'UNDEFINED' THEN
  42.     include 'ImageCompression.a'
  43.     ENDIF
  44. ;        include 'QDOffscreen.a'                                    ;
  45. ;            include 'Errors.a'                                        ;
  46. ;        include 'Components.a'                                        ;
  47. ;        include 'StandardFile.a'                                    ;
  48. ;            include 'Dialogs.a'                                    ;
  49. ;                include 'TextEdit.a'                                ;
  50. ;            include 'Files.a'                                        ;
  51. ;                include 'Finder.a'                                    ;
  52.  
  53.     IF &TYPE('__MOVIES__') = 'UNDEFINED' THEN
  54.     include 'Movies.a'
  55.     ENDIF
  56. ;        include 'Aliases.a'                                        ;
  57. ;            include 'AppleTalk.a'                                    ;
  58.  
  59. kMovieVersion                    EQU        0                    ; version number of the format here described 
  60.  
  61. MoviesUserData             RECORD    0
  62. size                     ds.l   1        ; offset: $0 (0)        ; size of this user data 
  63. udType                     ds.l   1        ; offset: $4 (4)        ; type of user data 
  64. data                     ds.b   1        ; offset: $8 (8)        ; the user data 
  65.                          ORG 10
  66. sizeof                     EQU *            ; size:   $A (10)
  67.                         ENDR
  68.  
  69. ; typedef struct MoviesUserData  MoviesUserData
  70. UserDataAtom             RECORD    0
  71. size                     ds.l   1        ; offset: $0 (0)
  72. atomType                 ds.l   1        ; offset: $4 (4)
  73. userData                 ds     MoviesUserData ; offset: $8 (8)
  74. sizeof                     EQU *            ; size:   $12 (18)
  75.                         ENDR
  76.  
  77. ; typedef struct UserDataAtom  UserDataAtom
  78. ; MoviesDataDescription tells us where the data for the movie or track lives.
  79. ;   The data can follow the directory, be in the datafork of the same file as the directory resource,
  80. ;   be in the resource fork of the same file as the directory resource, be in another file in the
  81. ;   data fork or resource fork, or require a specific bottleneck to fetch the data. 
  82. ;***************************************
  83. ;*
  84. ;*   MediaDirectory information -
  85. ;*        The MediaDirectory is tightly coupled to the data.
  86. ;*
  87. ;***************************************
  88. SampleDescriptionAtom     RECORD    0
  89. size                     ds.l   1        ; offset: $0 (0)
  90. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stsd' 
  91. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  92. numEntries                 ds.l   1        ; offset: $C (12)
  93. sampleDescTable             ds     SampleDescription ; offset: $10 (16)
  94. sizeof                     EQU *            ; size:   $20 (32)
  95.                         ENDR
  96.  
  97. ; typedef struct SampleDescriptionAtom  SampleDescriptionAtom
  98. ; TimeToSampleNum maps physical sample time to physical sample number. 
  99. TimeToSampleNum         RECORD    0
  100. sampleCount                 ds.l   1        ; offset: $0 (0)
  101. sampleDuration             ds.l   1        ; offset: $4 (4)
  102. sizeof                     EQU *            ; size:   $8 (8)
  103.                         ENDR
  104.  
  105. ; typedef struct TimeToSampleNum  TimeToSampleNum
  106. TimeToSampleNumAtom     RECORD    0
  107. size                     ds.l   1        ; offset: $0 (0)
  108. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stts' 
  109. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  110. numEntries                 ds.l   1        ; offset: $C (12)
  111. timeToSampleNumTable     ds     TimeToSampleNum ; offset: $10 (16)
  112. sizeof                     EQU *            ; size:   $18 (24)
  113.                         ENDR
  114.  
  115. ; typedef struct TimeToSampleNumAtom  TimeToSampleNumAtom
  116. ; SyncSamples is a list of the physical samples which are self contained. 
  117. SyncSampleAtom             RECORD    0
  118. size                     ds.l   1        ; offset: $0 (0)
  119. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stss' 
  120. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  121. numEntries                 ds.l   1        ; offset: $C (12)
  122. syncSampleTable             ds.l   1        ; offset: $10 (16)
  123. sizeof                     EQU *            ; size:   $14 (20)
  124.                         ENDR
  125.  
  126. ; typedef struct SyncSampleAtom  SyncSampleAtom
  127. ; SampleToChunk maps physical sample number to chunk number. 
  128. ; same as SampleToChunk, but redundant first sample is removed 
  129. SampleToChunk             RECORD    0
  130. firstChunk                 ds.l   1        ; offset: $0 (0)
  131. samplesPerChunk             ds.l   1        ; offset: $4 (4)
  132. sampleDescriptionID         ds.l   1        ; offset: $8 (8)
  133. sizeof                     EQU *            ; size:   $C (12)
  134.                         ENDR
  135.  
  136. ; typedef struct SampleToChunk  SampleToChunk
  137. SampleToChunkAtom         RECORD    0
  138. size                     ds.l   1        ; offset: $0 (0)
  139. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stsc' 
  140. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  141. numEntries                 ds.l   1        ; offset: $C (12)
  142. sampleToChunkTable         ds     SampleToChunk ; offset: $10 (16)
  143. sizeof                     EQU *            ; size:   $1C (28)
  144.                         ENDR
  145.  
  146. ; typedef struct SampleToChunkAtom  SampleToChunkAtom
  147. ChunkOffsetAtom         RECORD    0
  148. size                     ds.l   1        ; offset: $0 (0)
  149. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stco' 
  150. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  151. numEntries                 ds.l   1        ; offset: $C (12)
  152. chunkOffsetTable         ds.l   1        ; offset: $10 (16)
  153. sizeof                     EQU *            ; size:   $14 (20)
  154.                         ENDR
  155.  
  156. ; typedef struct ChunkOffsetAtom  ChunkOffsetAtom
  157. SampleSizeAtom             RECORD    0
  158. size                     ds.l   1        ; offset: $0 (0)
  159. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stsz' 
  160. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  161. sampleSize                 ds.l   1        ; offset: $C (12)
  162. numEntries                 ds.l   1        ; offset: $10 (16)
  163. sampleSizeTable             ds.l   1        ; offset: $14 (20)
  164. sizeof                     EQU *            ; size:   $18 (24)
  165.                         ENDR
  166.  
  167. ; typedef struct SampleSizeAtom  SampleSizeAtom
  168. ShadowSync                 RECORD    0
  169. fdSampleNum                 ds.l   1        ; offset: $0 (0)
  170. syncSampleNum             ds.l   1        ; offset: $4 (4)
  171. sizeof                     EQU *            ; size:   $8 (8)
  172.                         ENDR
  173.  
  174. ; typedef struct ShadowSync  ShadowSync
  175. ShadowSyncAtom             RECORD    0
  176. size                     ds.l   1        ; offset: $0 (0)
  177. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stsz' 
  178. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  179. numEntries                 ds.l   1        ; offset: $C (12)
  180. shadowSyncTable             ds     ShadowSync ; offset: $10 (16)
  181. sizeof                     EQU *            ; size:   $18 (24)
  182.                         ENDR
  183.  
  184. ; typedef struct ShadowSyncAtom  ShadowSyncAtom
  185. SampleTableAtom         RECORD    0
  186. size                     ds.l   1        ; offset: $0 (0)
  187. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'stbl' 
  188. sampleDescription         ds     SampleDescriptionAtom ; offset: $8 (8)
  189. timeToSampleNum             ds     TimeToSampleNumAtom ; offset: $28 (40)
  190. sampleToChunk             ds     SampleToChunkAtom ; offset: $40 (64)
  191. syncSample                 ds     SyncSampleAtom ; offset: $5C (92)
  192. sampleSize                 ds     SampleSizeAtom ; offset: $70 (112)
  193. chunkOffset                 ds     ChunkOffsetAtom ; offset: $88 (136)
  194. shadowSync                 ds     ShadowSyncAtom ; offset: $9C (156)
  195. sizeof                     EQU *            ; size:   $B4 (180)
  196.                         ENDR
  197.  
  198. ; typedef struct SampleTableAtom  SampleTableAtom
  199. PublicHandlerInfo         RECORD    0
  200. flags                     ds.l   1        ; offset: $0 (0)        ; 1 byte of version / 3 bytes of flags 
  201. componentType             ds.l   1        ; offset: $4 (4)
  202. componentSubType         ds.l   1        ; offset: $8 (8)
  203. componentManufacturer     ds.l   1        ; offset: $C (12)
  204. componentFlags             ds.l   1        ; offset: $10 (16)
  205. componentFlagsMask         ds.l   1        ; offset: $14 (20)
  206. componentName             ds.b   1        ; offset: $18 (24)
  207.                          ORG 26
  208. sizeof                     EQU *            ; size:   $1A (26)
  209.                         ENDR
  210.  
  211. ; typedef struct PublicHandlerInfo  PublicHandlerInfo
  212. HandlerAtom             RECORD    0
  213. size                     ds.l   1        ; offset: $0 (0)
  214. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'hdlr' 
  215. hInfo                     ds     PublicHandlerInfo ; offset: $8 (8)
  216. sizeof                     EQU *            ; size:   $22 (34)
  217.                         ENDR
  218.  
  219. ; typedef struct HandlerAtom  HandlerAtom
  220. ; a data reference is a private structure 
  221. ; typedef long                 DataRefAtom
  222. DataInfoAtom             RECORD    0
  223. size                     ds.l   1        ; offset: $0 (0)
  224. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'dinf' 
  225. dataRef                     ds.l   1        ; offset: $8 (8)
  226. sizeof                     EQU *            ; size:   $C (12)
  227.                         ENDR
  228.  
  229. ; typedef struct DataInfoAtom  DataInfoAtom
  230. RgnAtom                 RECORD    0
  231. size                     ds.l   1        ; offset: $0 (0)
  232. atomType                 ds.l   1        ; offset: $4 (4)
  233. rgnSize                     ds.w   1        ; offset: $8 (8)
  234. rgnBBox                     ds     Rect    ; offset: $A (10)
  235. data                     ds.b   1        ; offset: $12 (18)
  236.                          ORG 20
  237. sizeof                     EQU *            ; size:   $14 (20)
  238.                         ENDR
  239.  
  240. ; typedef struct RgnAtom     RgnAtom
  241. MatteCompressedAtom     RECORD    0
  242. size                     ds.l   1        ; offset: $0 (0)
  243. atomType                 ds.l   1        ; offset: $4 (4)
  244. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  245. matteImageDescription     ds     ImageDescription ; offset: $C (12)
  246. matteData                 ds.b   1        ; offset: $62 (98)
  247.                          ORG 100
  248. sizeof                     EQU *            ; size:   $64 (100)
  249.                         ENDR
  250.  
  251. ; typedef struct MatteCompressedAtom  MatteCompressedAtom
  252. MatteAtom                 RECORD    0
  253. size                     ds.l   1        ; offset: $0 (0)
  254. atomType                 ds.l   1        ; offset: $4 (4)
  255. aCompressedMatte         ds     MatteCompressedAtom ; offset: $8 (8)
  256. sizeof                     EQU *            ; size:   $6C (108)
  257.                         ENDR
  258.  
  259. ; typedef struct MatteAtom     MatteAtom
  260. ClippingAtom             RECORD    0
  261. size                     ds.l   1        ; offset: $0 (0)
  262. atomType                 ds.l   1        ; offset: $4 (4)
  263. aRgnClip                 ds     RgnAtom    ; offset: $8 (8)
  264. sizeof                     EQU *            ; size:   $1C (28)
  265.                         ENDR
  266.  
  267. ; typedef struct ClippingAtom  ClippingAtom
  268. ;**********************
  269. ;* Media Info Example Structures
  270. ;**********************
  271. VideoMediaInfoHeader     RECORD    0
  272. flags                     ds.l   1        ; offset: $0 (0)        ; 1 byte of version / 3 bytes of flags 
  273. graphicsMode             ds.w   1        ; offset: $4 (4)        ; for QD - transfer mode 
  274. opColorRed                 ds.w   1        ; offset: $6 (6)        ; opcolor for transfer mode 
  275. opColorGreen             ds.w   1        ; offset: $8 (8)
  276. opColorBlue                 ds.w   1        ; offset: $A (10)
  277. sizeof                     EQU *            ; size:   $C (12)
  278.                         ENDR
  279.  
  280. ; typedef struct VideoMediaInfoHeader  VideoMediaInfoHeader
  281. VideoMediaInfoHeaderAtom RECORD    0
  282. size                     ds.l   1        ; offset: $0 (0)        ; size of Media info 
  283. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'vmhd' 
  284. vmiHeader                 ds     VideoMediaInfoHeader ; offset: $8 (8)
  285. sizeof                     EQU *            ; size:   $14 (20)
  286.                         ENDR
  287.  
  288. ; typedef struct VideoMediaInfoHeaderAtom  VideoMediaInfoHeaderAtom
  289. VideoMediaInfo             RECORD    0
  290. size                     ds.l   1        ; offset: $0 (0)        ; size of Media info 
  291. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'minf' 
  292. header                     ds     VideoMediaInfoHeaderAtom ; offset: $8 (8)
  293. dataHandler                 ds     HandlerAtom ; offset: $1C (28)
  294. dataInfo                 ds     DataInfoAtom ; offset: $3E (62)
  295. sampleTable                 ds     SampleTableAtom ; offset: $4A (74)
  296. sizeof                     EQU *            ; size:   $FE (254)
  297.                         ENDR
  298.  
  299. ; typedef struct VideoMediaInfo  VideoMediaInfo
  300. SoundMediaInfoHeader     RECORD    0
  301. flags                     ds.l   1        ; offset: $0 (0)        ; 1 byte of version / 3 bytes of flags 
  302. balance                     ds.w   1        ; offset: $4 (4)
  303. rsrvd                     ds.w   1        ; offset: $6 (6)
  304. sizeof                     EQU *            ; size:   $8 (8)
  305.                         ENDR
  306.  
  307. ; typedef struct SoundMediaInfoHeader  SoundMediaInfoHeader
  308. SoundMediaInfoHeaderAtom RECORD    0
  309. size                     ds.l   1        ; offset: $0 (0)        ; size of Media info 
  310. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'vmhd' 
  311. smiHeader                 ds     SoundMediaInfoHeader ; offset: $8 (8)
  312. sizeof                     EQU *            ; size:   $10 (16)
  313.                         ENDR
  314.  
  315. ; typedef struct SoundMediaInfoHeaderAtom  SoundMediaInfoHeaderAtom
  316. SoundMediaInfo             RECORD    0
  317. size                     ds.l   1        ; offset: $0 (0)        ; size of Media info 
  318. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'minf' 
  319. header                     ds     SoundMediaInfoHeaderAtom ; offset: $8 (8)
  320. dataHandler                 ds     HandlerAtom ; offset: $18 (24)
  321. dataReference             ds.l   1        ; offset: $3A (58)
  322. sampleTable                 ds     SampleTableAtom ; offset: $3E (62)
  323. sizeof                     EQU *            ; size:   $F2 (242)
  324.                         ENDR
  325.  
  326. ; typedef struct SoundMediaInfo  SoundMediaInfo
  327. ; whatever data the media handler needs goes after the atomType 
  328. MediaInfo                 RECORD    0
  329. size                     ds.l   1        ; offset: $0 (0)
  330. atomType                 ds.l   1        ; offset: $4 (4)
  331. sizeof                     EQU *            ; size:   $8 (8)
  332.                         ENDR
  333.  
  334. ; typedef struct MediaInfo     MediaInfo
  335. ;**********************
  336. ;* Media Directory Structures
  337. ;**********************
  338. MediaHeader             RECORD    0
  339. flags                     ds.l   1        ; offset: $0 (0)        ; 1 byte of version / 3 bytes of flags 
  340. creationTime             ds.l   1        ; offset: $4 (4)        ; seconds since Jan 1904 when directory was created 
  341. modificationTime         ds.l   1        ; offset: $8 (8)        ; seconds since Jan 1904 when directory was appended 
  342. timeScale                 ds.l   1        ; offset: $C (12)        ; start time for Media (Media time) 
  343. duration                 ds.l   1        ; offset: $10 (16)        ; length of Media (Media time) 
  344. language                 ds.w   1        ; offset: $14 (20)
  345. quality                     ds.w   1        ; offset: $16 (22)
  346. sizeof                     EQU *            ; size:   $18 (24)
  347.                         ENDR
  348.  
  349. ; typedef struct MediaHeader  MediaHeader
  350. MediaHeaderAtom         RECORD    0
  351. size                     ds.l   1        ; offset: $0 (0)
  352. atomType                 ds.l   1        ; offset: $4 (4)
  353. header                     ds     MediaHeader ; offset: $8 (8)
  354. sizeof                     EQU *            ; size:   $20 (32)
  355.                         ENDR
  356.  
  357. ; typedef struct MediaHeaderAtom  MediaHeaderAtom
  358. MediaDirectory             RECORD    0
  359. size                     ds.l   1        ; offset: $0 (0)
  360. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'mdia' 
  361. mediaHeader                 ds     MediaHeaderAtom ; offset: $8 (8) ; standard Media information 
  362. mediaHandler             ds     HandlerAtom ; offset: $28 (40)
  363. mediaInfo                 ds     MediaInfo ; offset: $4A (74)
  364. sizeof                     EQU *            ; size:   $52 (82)
  365.                         ENDR
  366.  
  367. ; typedef struct MediaDirectory  MediaDirectory
  368. ;**********************
  369. ;* Track Structures
  370. ;**********************
  371.  
  372. TrackEnable                        EQU        1 << 0
  373. TrackInMovie                    EQU        1 << 1
  374. TrackInPreview                    EQU        1 << 2
  375. TrackInPoster                    EQU        1 << 3
  376.  
  377. TrackHeader             RECORD    0
  378. flags                     ds.l   1        ; offset: $0 (0)        ; 1 byte of version / 3 bytes of flags 
  379. creationTime             ds.l   1        ; offset: $4 (4)        ; seconds since Jan 1904 when directory was created 
  380. modificationTime         ds.l   1        ; offset: $8 (8)        ; seconds since Jan 1904 when directory was appended 
  381. trackID                     ds.l   1        ; offset: $C (12)
  382. reserved1                 ds.l   1        ; offset: $10 (16)
  383. duration                 ds.l   1        ; offset: $14 (20)        ; length of track (track time) 
  384. reserved2                 ds.l   1        ; offset: $18 (24)
  385. reserved3                 ds.l   1        ; offset: $1C (28)
  386. layer                     ds.w   1        ; offset: $20 (32)
  387. alternateGroup             ds.w   1        ; offset: $22 (34)
  388. volume                     ds.w   1        ; offset: $24 (36)
  389. reserved4                 ds.w   1        ; offset: $26 (38)
  390. matrix                     ds     MatrixRecord ; offset: $28 (40)
  391. trackWidth                 ds.l   1        ; offset: $4C (76)
  392. trackHeight                 ds.l   1        ; offset: $50 (80)
  393. sizeof                     EQU *            ; size:   $54 (84)
  394.                         ENDR
  395.  
  396. ; typedef struct TrackHeader  TrackHeader
  397. TrackHeaderAtom         RECORD    0
  398. size                     ds.l   1        ; offset: $0 (0)        ; size of track header 
  399. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'tkhd' 
  400. header                     ds     TrackHeader ; offset: $8 (8)
  401. sizeof                     EQU *            ; size:   $5C (92)
  402.                         ENDR
  403.  
  404. ; typedef struct TrackHeaderAtom  TrackHeaderAtom
  405. EditListType             RECORD    0
  406. trackDuration             ds.l   1        ; offset: $0 (0)
  407. mediaTime                 ds.l   1        ; offset: $4 (4)
  408. mediaRate                 ds.l   1        ; offset: $8 (8)
  409. sizeof                     EQU *            ; size:   $C (12)
  410.                         ENDR
  411.  
  412. ; typedef struct EditListType  EditListType
  413. EditListAtom             RECORD    0
  414. size                     ds.l   1        ; offset: $0 (0)
  415. atomType                 ds.l   1        ; offset: $4 (4)        ; = elst 
  416. flags                     ds.l   1        ; offset: $8 (8)        ; 1 byte of version / 3 bytes of flags 
  417. numEntries                 ds.l   1        ; offset: $C (12)
  418. editListTable             ds     EditListType ; offset: $10 (16)
  419. sizeof                     EQU *            ; size:   $1C (28)
  420.                         ENDR
  421.  
  422. ; typedef struct EditListAtom  EditListAtom
  423. EditsAtom                 RECORD    0
  424. size                     ds.l   1        ; offset: $0 (0)
  425. atomType                 ds.l   1        ; offset: $4 (4)        ; = edts 
  426. editList                 ds     EditListAtom ; offset: $8 (8)
  427. sizeof                     EQU *            ; size:   $24 (36)
  428.                         ENDR
  429.  
  430. ; typedef struct EditsAtom     EditsAtom
  431. TrackLoadSettings         RECORD    0
  432. preloadStartTime         ds.l   1        ; offset: $0 (0)
  433. preloadDuration             ds.l   1        ; offset: $4 (4)
  434. preloadFlags             ds.l   1        ; offset: $8 (8)
  435. defaultHints             ds.l   1        ; offset: $C (12)
  436. sizeof                     EQU *            ; size:   $10 (16)
  437.                         ENDR
  438.  
  439. ; typedef struct TrackLoadSettings  TrackLoadSettings
  440. TrackLoadSettingsAtom     RECORD    0
  441. size                     ds.l   1        ; offset: $0 (0)
  442. atomType                 ds.l   1        ; offset: $4 (4)        ; = load 
  443. settings                 ds     TrackLoadSettings ; offset: $8 (8)
  444. sizeof                     EQU *            ; size:   $18 (24)
  445.                         ENDR
  446.  
  447. ; typedef struct TrackLoadSettingsAtom  TrackLoadSettingsAtom
  448. TrackDirectory             RECORD    0
  449. size                     ds.l   1        ; offset: $0 (0)
  450. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'trak' 
  451. trackHeader                 ds     TrackHeaderAtom ; offset: $8 (8) ; standard track information 
  452. trackClip                 ds     ClippingAtom ; offset: $64 (100)
  453. edits                     ds     EditsAtom ; offset: $80 (128)
  454. media                     ds     MediaDirectory ; offset: $A4 (164)
  455. userData                 ds     UserDataAtom ; offset: $F6 (246) ; space for extending with new data types 
  456. sizeof                     EQU *            ; size:   $108 (264)
  457.                         ENDR
  458.  
  459. ; typedef struct TrackDirectory  TrackDirectory
  460. ;***************************************
  461. ;*
  462. ;*   MovieDirectory -
  463. ;*        The MovieDirectory is the top level structure which
  464. ;*        holds the TrackInstance describing where the
  465. ;*        TrackDirectories are.
  466. ;*
  467. ;***************************************
  468. MovieHeader             RECORD    0
  469. flags                     ds.l   1        ; offset: $0 (0)        ; 1 byte of version / 3 bytes of flags 
  470. creationTime             ds.l   1        ; offset: $4 (4)        ; seconds since Jan 1904 when directory was created 
  471. modificationTime         ds.l   1        ; offset: $8 (8)        ; seconds since Jan 1904 when directory was appended 
  472. timeScale                 ds.l   1        ; offset: $C (12)        ; Time specifications 
  473. duration                 ds.l   1        ; offset: $10 (16)
  474. preferredRate             ds.l   1        ; offset: $14 (20)        ; rate at which to play this movie 
  475. preferredVolume             ds.w   1        ; offset: $18 (24)        ; volume to play movie at 
  476. reserved1                 ds.w   1        ; offset: $1A (26)
  477. preferredLong1             ds.l   1        ; offset: $1C (28)
  478. preferredLong2             ds.l   1        ; offset: $20 (32)
  479. matrix                     ds     MatrixRecord ; offset: $24 (36)
  480. previewTime                 ds.l   1        ; offset: $48 (72)        ; time in track the proxy begins (track time) 
  481. previewDuration             ds.l   1        ; offset: $4C (76)        ; how long the proxy lasts (track time) 
  482. posterTime                 ds.l   1        ; offset: $50 (80)        ; time in track the proxy begins (track time) 
  483. selectionTime             ds.l   1        ; offset: $54 (84)        ; time in track the proxy begins (track time) 
  484. selectionDuration         ds.l   1        ; offset: $58 (88)        ; time in track the proxy begins (track time) 
  485. currentTime                 ds.l   1        ; offset: $5C (92)        ; time in track the proxy begins (track time) 
  486. nextTrackID                 ds.l   1        ; offset: $60 (96)        ; next value to use for a TrackID 
  487. sizeof                     EQU *            ; size:   $64 (100)
  488.                         ENDR
  489.  
  490. ; typedef struct MovieHeader  MovieHeader
  491. MovieHeaderAtom         RECORD    0
  492. size                     ds.l   1        ; offset: $0 (0)
  493. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'mvhd' 
  494. header                     ds     MovieHeader ; offset: $8 (8)
  495. sizeof                     EQU *            ; size:   $6C (108)
  496.                         ENDR
  497.  
  498. ; typedef struct MovieHeaderAtom  MovieHeaderAtom
  499. MovieDirectory             RECORD    0
  500. size                     ds.l   1        ; offset: $0 (0)
  501. atomType                 ds.l   1        ; offset: $4 (4)        ; = 'moov' 
  502. header                     ds     MovieHeaderAtom ; offset: $8 (8)
  503. movieClip                 ds     ClippingAtom ; offset: $74 (116)
  504. ; Track Directories 
  505. trackDirectory             ds     TrackDirectory ; offset: $90 (144) ; Track directory information 
  506. ; User data for Movie 
  507. userData                 ds     UserDataAtom ; offset: $198 (408) ; space for user extensions 
  508. sizeof                     EQU *            ; size:   $1AA (426)
  509.                         ENDR
  510.  
  511. ; typedef struct MovieDirectory  MovieDirectory
  512.  
  513. ; some system defined format IDs 
  514. MOVIE_TYPE                        EQU        'moov'
  515. TRACK_TYPE                        EQU        'trak'
  516. MEDIA_TYPE                        EQU        'mdia'
  517. VIDEO_TYPE                        EQU        'vide'
  518. SOUND_TYPE                        EQU        'soun'
  519.  
  520. ; atom id's 
  521. MovieAID                        EQU        'moov'
  522. MovieHeaderAID                    EQU        'mvhd'
  523. ClipAID                            EQU        'clip'
  524. RgnClipAID                        EQU        'crgn'
  525. MatteAID                        EQU        'matt'
  526. MatteCompAID                    EQU        'kmat'
  527. TrackAID                        EQU        'trak'
  528. UserDataAID                        EQU        'udta'
  529. TrackHeaderAID                    EQU        'tkhd'
  530. EditsAID                        EQU        'edts'
  531. EditListAID                        EQU        'elst'
  532. MediaAID                        EQU        'mdia'
  533. MediaHeaderAID                    EQU        'mdhd'
  534. MediaInfoAID                    EQU        'minf'
  535. VideoMediaInfoHeaderAID            EQU        'vmhd'
  536. SoundMediaInfoHeaderAID            EQU        'smhd'
  537. GenericMediaInfoHeaderAID        EQU        'gmhd'
  538. GenericMediaInfoAID                EQU        'gmin'
  539. DataInfoAID                        EQU        'dinf'
  540. DataRefAID                        EQU        'dref'
  541. SampleTableAID                    EQU        'stbl'
  542. STSampleDescAID                    EQU        'stsd'
  543. STTimeToSampAID                    EQU        'stts'
  544. STSyncSampleAID                    EQU        'stss'
  545. STSampleToChunkAID                EQU        'stsc'
  546. STShadowSyncAID                    EQU        'stsh'
  547. HandlerAID                        EQU        'hdlr'
  548. STSampleSizeAID                    EQU        'stsz'
  549. STChunkOffsetAID                EQU        'stco'
  550. DataRefContainerAID                EQU        'drfc'
  551. TrackReferenceAID                EQU        'tref'
  552. ColorTableAID                    EQU        'ctab'
  553. LoadSettingsAID                    EQU        'load'
  554.  
  555.     ENDIF ; __MOVIESFORMAT__
  556.